// This file contains all the SVG imports for illustrations used in the app
// Company Cards
import type {SvgProps} from 'react-native-svg';
import CompanyCardsEmptyState from '@assets/images/companyCards/emptystate__card-pos.svg';
import PendingBank from '@assets/images/companyCards/pending-bank.svg';
import CompanyCardsPendingState from '@assets/images/companyCards/pendingstate_laptop-with-hourglass-and-cards.svg';
// Other assets
import Computer from '@assets/images/computer.svg';
// Educational Illustrations
import MultiScan from '@assets/images/educational-illustration__multi-scan.svg';
// Expensify Card
import EmptyCardState from '@assets/images/emptystate__expensifycard.svg';
import ExpensifyCardImage from '@assets/images/expensify-card.svg';
import ExpensifyCardIllustration from '@assets/images/expensifyCard/cardIllustration.svg';
// Other Images
import Hand from '@assets/images/hand.svg';
import LaptopOnDeskWithCoffeeAndKey from '@assets/images/laptop-on-desk-with-coffee-and-key.svg';
import LaptopWithSecondScreenAndHourglass from '@assets/images/laptop-with-second-screen-and-hourglass.svg';
import LaptopWithSecondScreenSync from '@assets/images/laptop-with-second-screen-sync.svg';
import LaptopWithSecondScreenX from '@assets/images/laptop-with-second-screen-x.svg';
// Product Illustrations
import Abracadabra from '@assets/images/product-illustrations/abracadabra.svg';
import BigVault from '@assets/images/product-illustrations/big-vault.svg';
import BrokenCompanyCardBankConnection from '@assets/images/product-illustrations/broken-humpty-dumpty.svg';
import BrokenMagnifyingGlass from '@assets/images/product-illustrations/broken-magnifying-glass.svg';
import DjBoothReferenceHands from '@assets/images/product-illustrations/dj-booth-reference-hands.svg';
import EmptyStateExpenses from '@assets/images/product-illustrations/emptystate__expenses.svg';
import HoldExpense from '@assets/images/product-illustrations/emptystate__holdexpense.svg';
import ReceiptFairy from '@assets/images/product-illustrations/emptystate__receiptfairy.svg';
import FolderWithPapers from '@assets/images/product-illustrations/folder-with-papers.svg';
import Hands from '@assets/images/product-illustrations/home-illustration-hands.svg';
import CardReplacementSuccess from '@assets/images/product-illustrations/illustration__card-replacement-success.svg';
import MagicCode from '@assets/images/product-illustrations/magic-code.svg';
import ModalHoldOrReject from '@assets/images/product-illustrations/modal-hold-or-reject.svg';
import MushroomTopHat from '@assets/images/product-illustrations/mushroom-top-hat.svg';
import PaymentHands from '@assets/images/product-illustrations/payment-hands.svg';
import ReceiptsStackedOnPin from '@assets/images/product-illustrations/receipts-stacked-on-pin.svg';
import RocketBlue from '@assets/images/product-illustrations/rocket--blue.svg';
import RocketDude from '@assets/images/product-illustrations/rocket-dude.svg';
import Safe from '@assets/images/product-illustrations/safe.svg';
import SaveTheWorldScale from '@assets/images/product-illustrations/save-the-world-scale.svg';
import SewerDino from '@assets/images/product-illustrations/sewer_dino.svg';
import SmartScan from '@assets/images/product-illustrations/simple-illustration__smartscan.svg';
import TeleScope from '@assets/images/product-illustrations/telescope.svg';
import ThreeLeggedLaptopWoman from '@assets/images/product-illustrations/three_legged_laptop_woman.svg';
import TiltedCoinExpensify from '@assets/images/product-illustrations/tilted-coin-expensify.svg';
import ToddBehindCloud from '@assets/images/product-illustrations/todd-behind-cloud.svg';
import ToddInCar from '@assets/images/product-illustrations/todd-in-car.svg';
import ToddWithPhones from '@assets/images/product-illustrations/todd-with-phones.svg';
import WorkspaceScene from '@assets/images/product-illustrations/workspace-scene.svg';
import ReceiptUpload from '@assets/images/receipt-upload.svg';
import RunningTurtle from '@assets/images/running-turtle.svg';
import Shutter from '@assets/images/shutter.svg';
// Simple Illustrations - Bucket 3 (Common)
import Puzzle from '@assets/images/simple-illustrations/emptystate__puzzlepieces.svg';
import Abacus from '@assets/images/simple-illustrations/simple-illustration__abacus.svg';
// Simple Illustrations - Original core ones
import Accounting from '@assets/images/simple-illustrations/simple-illustration__accounting.svg';
import Alert from '@assets/images/simple-illustrations/simple-illustration__alert.svg';
import Approval from '@assets/images/simple-illustrations/simple-illustration__approval.svg';
import Binoculars from '@assets/images/simple-illustrations/simple-illustration__binoculars.svg';
import BlueShield from '@assets/images/simple-illustrations/simple-illustration__blueshield.svg';
import Building from '@assets/images/simple-illustrations/simple-illustration__building.svg';
import Buildings from '@assets/images/simple-illustrations/simple-illustration__buildings.svg';
import CarIce from '@assets/images/simple-illustrations/simple-illustration__car-ice.svg';
import Car from '@assets/images/simple-illustrations/simple-illustration__car.svg';
import PinkCar from '@assets/images/simple-illustrations/simple-illustration__car_pink.svg';
import ChatBubbles from '@assets/images/simple-illustrations/simple-illustration__chatbubbles.svg';
import CheckmarkCircle from '@assets/images/simple-illustrations/simple-illustration__checkmarkcircle.svg';
import Clock from '@assets/images/simple-illustrations/simple-illustration__clock.svg';
import Coins from '@assets/images/simple-illustrations/simple-illustration__coins.svg';
import CommentBubbles from '@assets/images/simple-illustrations/simple-illustration__commentbubbles.svg';
import ConciergeBubble from '@assets/images/simple-illustrations/simple-illustration__concierge-bubble.svg';
import CreditCardsNew from '@assets/images/simple-illustrations/simple-illustration__credit-cards.svg';
import CreditCardEyes from '@assets/images/simple-illustrations/simple-illustration__creditcardeyes.svg';
import CreditCardsNewGreen from '@assets/images/simple-illustrations/simple-illustration__creditcards--green.svg';
import EmailAddress from '@assets/images/simple-illustrations/simple-illustration__email-address.svg';
import EmptyShelves from '@assets/images/simple-illustrations/simple-illustration__empty-shelves.svg';
import Encryption from '@assets/images/simple-illustrations/simple-illustration__encryption.svg';
import EnvelopeReceipt from '@assets/images/simple-illustrations/simple-illustration__envelopereceipt.svg';
import Filters from '@assets/images/simple-illustrations/simple-illustration__filters.svg';
import Flash from '@assets/images/simple-illustrations/simple-illustration__flash.svg';
import FolderOpen from '@assets/images/simple-illustrations/simple-illustration__folder-open.svg';
import Gears from '@assets/images/simple-illustrations/simple-illustration__gears.svg';
import HandCard from '@assets/images/simple-illustrations/simple-illustration__handcard.svg';
import HeadSet from '@assets/images/simple-illustrations/simple-illustration__headset.svg';
import Hourglass from '@assets/images/simple-illustrations/simple-illustration__hourglass.svg';
import House from '@assets/images/simple-illustrations/simple-illustration__house.svg';
import InvoiceBlue from '@assets/images/simple-illustrations/simple-illustration__invoice.svg';
import Lightbulb from '@assets/images/simple-illustrations/simple-illustration__lightbulb.svg';
import LockClosed from '@assets/images/simple-illustrations/simple-illustration__lockclosed.svg';
import LockClosedOrange from '@assets/images/simple-illustrations/simple-illustration__lockclosed_orange.svg';
import LockOpen from '@assets/images/simple-illustrations/simple-illustration__lockopen.svg';
import Luggage from '@assets/images/simple-illustrations/simple-illustration__luggage.svg';
import MagnifyingGlassMoney from '@assets/images/simple-illustrations/simple-illustration__magnifyingglass-money.svg';
import Mailbox from '@assets/images/simple-illustrations/simple-illustration__mailbox.svg';
import ExpensifyMobileApp from '@assets/images/simple-illustrations/simple-illustration__mobileapp.svg';
import MoneyReceipts from '@assets/images/simple-illustrations/simple-illustration__money-receipts.svg';
import MoneyIntoWallet from '@assets/images/simple-illustrations/simple-illustration__moneyintowallet.svg';
import MoneyWings from '@assets/images/simple-illustrations/simple-illustration__moneywings.svg';
import OpenSafe from '@assets/images/simple-illustrations/simple-illustration__opensafe.svg';
import PalmTree from '@assets/images/simple-illustrations/simple-illustration__palmtree.svg';
import PaperAirplane from '@assets/images/simple-illustrations/simple-illustration__paperairplane.svg';
import Pencil from '@assets/images/simple-illustrations/simple-illustration__pencil.svg';
import PerDiem from '@assets/images/simple-illustrations/simple-illustration__perdiem.svg';
import PiggyBank from '@assets/images/simple-illustrations/simple-illustration__piggybank.svg';
import Pillow from '@assets/images/simple-illustrations/simple-illustration__pillow.svg';
import Profile from '@assets/images/simple-illustrations/simple-illustration__profile.svg';
import QRCode from '@assets/images/simple-illustrations/simple-illustration__qr-code.svg';
import RealtimeReport from '@assets/images/simple-illustrations/simple-illustration__realtimereports.svg';
import ReceiptLocationMarker from '@assets/images/simple-illustrations/simple-illustration__receipt-location-marker.svg';
import ReceiptWrangler from '@assets/images/simple-illustrations/simple-illustration__receipt-wrangler.svg';
import ReceiptPartners from '@assets/images/simple-illustrations/simple-illustration__receipt.svg';
import ReportReceipt from '@assets/images/simple-illustrations/simple-illustration__report-receipt.svg';
import Rules from '@assets/images/simple-illustrations/simple-illustration__rules.svg';
import SendMoney from '@assets/images/simple-illustrations/simple-illustration__sendmoney.svg';
import ShieldYellow from '@assets/images/simple-illustrations/simple-illustration__shield.svg';
import SplitBill from '@assets/images/simple-illustrations/simple-illustration__splitbill.svg';
import Stopwatch from '@assets/images/simple-illustrations/simple-illustration__stopwatch.svg';
import SubscriptionAnnual from '@assets/images/simple-illustrations/simple-illustration__subscription-annual.svg';
import SubscriptionPPU from '@assets/images/simple-illustrations/simple-illustration__subscription-ppu.svg';
import Tag from '@assets/images/simple-illustrations/simple-illustration__tag.svg';
import TeachersUnite from '@assets/images/simple-illustrations/simple-illustration__teachers-unite.svg';
import ThumbsDown from '@assets/images/simple-illustrations/simple-illustration__thumbsdown.svg';
import ThumbsUpStars from '@assets/images/simple-illustrations/simple-illustration__thumbsupstars.svg';
import Tire from '@assets/images/simple-illustrations/simple-illustration__tire.svg';
import TrashCan from '@assets/images/simple-illustrations/simple-illustration__trashcan.svg';
import TreasureChest from '@assets/images/simple-illustrations/simple-illustration__treasurechest.svg';
import CompanyCard from '@assets/images/simple-illustrations/simple-illustration__twocards-horizontal.svg';
import VirtualCard from '@assets/images/simple-illustrations/simple-illustration__virtualcard.svg';
import Workflows from '@assets/images/simple-illustrations/simple-illustration__workflows.svg';
import ExpensifyApprovedLogo from '@assets/images/subscription-details__approvedlogo.svg';
import TurtleInShell from '@assets/images/turtle-in-shell.svg';

// Create the illustrations object with all imported illustrations
const Illustrations = {
    // Company Cards
    CompanyCardsEmptyState,
    CompanyCardsPendingState,
    PendingBank,

    // Other assets
    Computer,
    EmptyCardState,
    ExpensifyCardImage,
    LaptopWithSecondScreenAndHourglass,
    LaptopWithSecondScreenSync,
    LaptopWithSecondScreenX,
    LaptopOnDeskWithCoffeeAndKey,

    // Expensify Card
    ExpensifyCardIllustration,

    // Product Illustrations
    Abracadabra,
    BigVault,
    BrokenCompanyCardBankConnection,
    BrokenMagnifyingGlass,
    DjBoothReferenceHands,
    EmptyStateExpenses,
    HoldExpense,
    ReceiptFairy,
    FolderWithPapers,
    Hands,
    CardReplacementSuccess,
    MagicCode,
    ModalHoldOrReject,
    MushroomTopHat,
    PaymentHands,
    ReceiptsStackedOnPin,
    RocketBlue,
    RocketDude,
    Safe,
    SaveTheWorldScale,
    SewerDino,
    SmartScan,
    TeleScope,
    Telescope: TeleScope, // Alias for consistency
    ThreeLeggedLaptopWoman,
    TiltedCoinExpensify,
    ToddBehindCloud,
    ToddInCar,
    ToddWithPhones,
    WorkspaceScene,

    // Educational Illustrations
    MultiScan,

    // Other Images
    Hand,
    ReceiptUpload,
    RunningTurtle,
    Shutter,
    ExpensifyApprovedLogo,
    TurtleInShell,

    // Simple Illustrations
    Accounting,
    Building,
    Coins,
    CreditCardsNew,
    FolderOpen,
    HandCard,
    InvoiceBlue,
    MagnifyingGlassMoney,
    MoneyReceipts,
    MoneyWings,
    MoneyIntoWallet,
    PerDiem,
    RealtimeReport,
    ReceiptWrangler,
    ReportReceipt,
    Rules,
    Stopwatch,
    Tag,
    CompanyCard,
    ThumbsDown,
    TreasureChest,
    ExpensifyMobileApp,
    PalmTree,
    PaperAirplane,
    PiggyBank,
    Pillow,
    Profile,
    QRCode,
    ReceiptLocationMarker,
    ReceiptPartners,
    SendMoney,
    SplitBill,
    SubscriptionAnnual,
    SubscriptionPPU,
    TeachersUnite,
    ThumbsUpStars,
    Tire,
    TrashCan,
    VirtualCard,
    Workflows,
    CarIce,
    BlueShield,
    Pencil,
    Luggage,
    OpenSafe,
    Puzzle,
    Abacus,
    Alert,
    Approval,
    Binoculars,
    Buildings,
    Car,
    PinkCar,
    ChatBubbles,
    CheckmarkCircle,
    CommentBubbles,
    ConciergeBubble,
    CreditCardEyes,
    CreditCardsNewGreen,
    EmailAddress,
    EmptyShelves,
    Encryption,
    EnvelopeReceipt,
    Filters,
    Flash,
    Gears,
    HeadSet,
    Hourglass,
    House,
    Lightbulb,
    LockClosed,
    LockClosedOrange,
    LockOpen,
    Mailbox,
    ShieldYellow,
    Clock,
};

/**
 * Get an illustration by name
 * @param illustrationName - The name of the illustration to retrieve
 * @returns The illustration component or undefined if not found
 */
function getIllustration(illustrationName: IllustrationName): React.FC<SvgProps> {
    return Illustrations[illustrationName];
}
/**
 * Get all available illustration names
 * @returns Array of available illustration names
 */
const AVAILABLE_ILLUSTRATIONS = Object.keys(Illustrations);

/**
 * Type representing all available illustration names
 */
type IllustrationName = keyof typeof Illustrations;

export default Illustrations;
export {getIllustration, AVAILABLE_ILLUSTRATIONS};
export type {IllustrationName};
